home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Demos / Bowers Development / AppMaker 2.0b5 / Examples / PowerPlant / Gadgets / CPallette.cp < prev    next >
Text File  |  1996-03-19  |  3KB  |  176 lines

  1. // CPallette.cp -- window methods
  2. // Created 3/19/96 12:49 PM by AppMaker
  3.  
  4. #include "CPallette.h"
  5.  
  6. #include <UReanimator.h>
  7. #include <URegistrar.h>
  8. #include <LStream.h>
  9. #include <LStdControl.h>
  10. #include "CGadgetsData.h"
  11. #include "CmdCodes.h"
  12.  
  13. #define PPob_PalletteID    204
  14. #define RidL_PalletteID    204
  15.  
  16. Boolean        CPallette::sIsRegistered = false;
  17.  
  18. //----------
  19. void
  20. CPallette::RegisterClass ()
  21. {
  22.     URegistrar::RegisterClass ('Pale', (ClassCreatorFunc)CPallette::CreatePalletteStream);
  23.  
  24.     // register the pane classes we use
  25.  
  26.     sIsRegistered = true;
  27. }
  28.  
  29. //----------
  30. CPallette*
  31. CPallette::CreatePallette(
  32.     LCommander            *inSuperCommander,
  33.     CGadgetsData        *inData)
  34. {
  35.     if (!sIsRegistered) {
  36.         RegisterClass ();
  37.     }
  38.  
  39.     CPallette        *window;
  40.  
  41.     window = (CPallette *)LWindow::CreateWindow(PPob_PalletteID, inSuperCommander);
  42.     window->ConnectToData (inData);
  43.  
  44.     return window;
  45. }
  46.  
  47. //----------
  48. //    This is the function you register with URegistrar to create a
  49. //    CPallette from a resource
  50.  
  51. CPallette*
  52. CPallette::CreatePalletteStream(
  53.     LStream    *inStream)
  54. {
  55.     return (new CPallette(inStream));
  56. }
  57.  
  58. //----------
  59. CPallette::CPallette()
  60. {
  61. }
  62.  
  63. //----------
  64. CPallette::CPallette(
  65.     LStream    *inStream)
  66.         : LWindow(inStream)
  67. {
  68. }
  69.  
  70. //----------
  71. CPallette::~CPallette()
  72. {
  73. }
  74.  
  75. //----------
  76. //    This member function gets called once the containment hierarchy that contains
  77. //    this pane has been built. It gives us a chance to get data members for
  78. //    interesting subviews, and to do other operations now that our subviews exist.
  79. void
  80. CPallette::FinishCreateSelf()
  81. {
  82.     mToolsPalette = (LStdControl *)FindPaneByID ('Toos');
  83.  
  84.     UReanimator::LinkListenerToControls(this, this, RidL_PalletteID);
  85.         // the purpose is to "connect" self to whatever controls
  86.         // that we want to "listen" to
  87.  
  88. // any additional initialization for your window:
  89.  
  90. }
  91.  
  92. //----------
  93. void
  94. CPallette::ConnectToData    (CGadgetsData        *inData)
  95. {
  96.     mData = inData;
  97.     inData->AddListener (this);
  98. }
  99.  
  100. //----------
  101. void
  102. CPallette::ListenToMessage(
  103.     MessageT    inMessage,
  104.     void        *ioParam)
  105. {
  106.     switch (inMessage) {
  107.  
  108.     default:
  109.         break;
  110.     }
  111. }
  112.  
  113. //----------
  114. Boolean
  115. CPallette::ObeyCommand(
  116.     CommandT    inCommand,
  117.     void        *ioParam)
  118. {
  119.     Boolean        cmdHandled = true;
  120.  
  121.     switch (inCommand) {
  122.  
  123.     // +++ Add cases here for the commands you handle
  124.     //        Remember to add same cases to FindCommandStatus below
  125.     //        to enable/disable the commands
  126.  
  127.     default:
  128.             cmdHandled = LWindow::ObeyCommand(inCommand, ioParam);
  129.         break;
  130.     }
  131.  
  132.     return cmdHandled;
  133. }
  134.  
  135. //----------
  136. void
  137. CPallette::FindCommandStatus(
  138.     CommandT    inCommand,
  139.     Boolean        &outEnabled,
  140.     Boolean        &outUsesMark,
  141.     Char16        &outMark,
  142.     Str255        outName)
  143. {
  144.     outUsesMark = false;
  145.  
  146.     switch (inCommand) {
  147.  
  148.     // +++ Add cases here for the commands you handle
  149.  
  150.     default:
  151.             LWindow::FindCommandStatus(inCommand, outEnabled,
  152.                                         outUsesMark, outMark, outName);
  153.         break;
  154.     }
  155. }
  156.  
  157. //----------
  158. Boolean
  159. CPallette::FocusDraw()
  160. {
  161.     Boolean        focused = LView::FocusDraw();
  162.  
  163.     if (focused) {
  164.         AuxWinHandle    awHndl;
  165.         CTabHandle        awCTable;
  166.         ColorSpec        contentSpec;
  167.  
  168.         GetAuxWin(GetMacPort(), &awHndl);
  169.         awCTable = (**awHndl).awCTable;
  170.         contentSpec = (**awCTable).ctTable [wContentColor];        // should search vs. index
  171.         ::RGBBackColor(&contentSpec.rgb);
  172.     }
  173.  
  174.     return focused;
  175. }
  176.